<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
</body>
</html>

<script>
// 单词：
  // symbol - 符号 、 标记
  // iterator - 迭代器


// 面试问题：JS中一共有多少种变量类型？
  // 1. 基础类型：数字、字符串、布尔值、undefined、null、symbol
  // 2. 复杂类型：object

// 面试问题：Symbol 有什么用？ -> 提供 私有属性 或 私有方法
  // 「私有变量」、「私有属性」
  // 什么叫 私有属性 - 即「对象」的私有属性：

const cellNumer = Symbol('cellNumer');
const heat = Symbol('heat');
// console.log(s, typeof s);

const hong = {
  [cellNumer]: 1000,
  [heat]() {
    // 私有方法，心跳
    console.log('💓');
  },
  say() {
    // 共有方法
  }
}



// ---------------  ES6 之前，私有属性 和 私有方法的约定：
// 之前和现在，
  // 「约定」：变量名以 `_` 开头，表示是私有属性 或 私有方法， 其他人 ！别动！；
const ming = {
  ['a' + 'b']: 'xxx',
  run() {

  },

  _cellNumer: 1000, // 这个属性 不需要被 调用小明 的程序员使用的
  _heat() {
    // 这个方法 不需要被 调用小明 的程序员使用的
    // 即为 私有方法
  }
}
</script>